package com.love.marriage.datingInfo.vo;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.love.marriage.common.vo.BaseVo;
import com.love.marriage.config.Long2StringSerializer;
import com.love.marriage.datingRegistrationInfo.vo.DatingRegistrationInfoVo;
import com.love.marriage.oss.vo.FileInfoVo;
import com.love.marriage.userActivityInfo.vo.UserActivityInfoVo;
import com.love.marriage.userProfileInfo.vo.UserProfileInfoVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * description:  约会表Vo
 * author:       alex
 * createDate:   2024-10-15 20:28:51
 * version:      1.0.0
 */
@Getter
@Setter
@Accessors(chain = true)
@Schema(name = "DatingInfoResVo", description = "约会结果vo")
public class DatingInfoResVo extends BaseVo<DatingInfoResVo>{

    @Schema(description = "用户编码", type = "String", implementation = String.class)
    private String code;

    @JsonSerialize(using = Long2StringSerializer.class)
    @Schema(description = "用户id", type = "Long", implementation = Long.class)
    private Long userId;

    @JsonSerialize(using = Long2StringSerializer.class)
    @Schema(description = "头像id", type = "Long", implementation = Long.class)
    private Long avatar;

    @Schema(description = "隐藏手机号", type = "Boolean", implementation = Boolean.class)
    private Boolean hiddenPhone;

    @Schema(description = "头像信息", implementation = FileInfoVo.class)
    private FileInfoVo personAvatar;

    @Schema(description = "电话", type = "String", implementation = String.class)
    private String phone;

    @Schema(description = "约会类型,字典(dataType)", type = "String", implementation = String.class)
    private String datingType;

    @Schema(description = "约会类型名称", type = "String", implementation = String.class)
    private String datingTypeName;

    @Schema(description = "约会主题", type = "String", implementation = String.class)
    private String datingTheme;

    @Schema(description = "约会开始时间", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime startTime;

    @Schema(description = "约会结束时间", type = "LocalDateTime", implementation = LocalDateTime.class)
    private LocalDateTime endTime;

    @Schema(description = "约会内容", type = "String", implementation = String.class)
    private String content;

    @Schema(description = "约会图片ID（逗号分隔）", type = "String", implementation = String.class)
    private String imageIds;

    @Schema(description = "约会地点详情", type = "String", implementation = String.class)
    private String location;

    @Schema(description = "约会地点名称", type = "String", implementation = String.class)
    private String locationName;

    @Schema(description = "约会图片信息",  type = "array", implementation = FileInfoVo.class)
    private List<FileInfoVo> fileInfoVoList;

    @Schema(description = "用户档案信息", implementation = UserProfileInfoVo.class)
    private UserProfileInfoVo userProfileInfoVo;

    @Schema(description = "应邀支付金额", type = "BigDecimal", implementation = BigDecimal.class)
    private BigDecimal payMoney;

    @Schema(description = "报名状态（1：已报名，2：已应邀）", type = "String", implementation = String.class)
    private String registered;

    @Schema(description = "是否已应邀", type = "Boolean", implementation = Boolean.class)
    private Boolean sureFlag;

    @Schema(description = "是否已结束", type = "Boolean", implementation = Boolean.class)
    private Boolean endFlag;

    @Schema(description = "省id", type = "Integer", implementation = Integer.class)
    private Integer provinceId;

    @Schema(description = "省名称", type = "String", implementation = String.class)
    private String provinceName;

    @Schema(description = "城市id", type = "Integer", implementation = Integer.class)
    private Integer cityId;

    @Schema(description = "城市名称", type = "String", implementation = String.class)
    private String cityName;

    @Schema(description = "区id", type = "Integer", implementation = Integer.class)
    private Integer districtId;

    @Schema(description = "区名称", type = "String", implementation = String.class)
    private String districtName;

    @Schema(description = "报名人数", type = "Integer", implementation = Integer.class)
    private Integer registrationCount;

    @Schema(description = "用户活动信息", implementation = UserActivityInfoVo.class)
    private UserActivityInfoVo userActivityInfoVo;

    @Schema(description = "置顶标识", type = "Boolean", implementation = Boolean.class)
    private Boolean topFlag;

    @JsonSerialize(using = Long2StringSerializer.class)
    @Schema(description = "分享照片ID", type = "Long", implementation = Long.class)
    private Long sharePhotoId;

    @Schema(description = "用户活动列表", type = "array", implementation = DatingRegistrationInfoVo.class)
    private List<DatingRegistrationInfoVo> datingRegistrationInfoVos;

    @Schema(description = "状态", type = "Integer", implementation = Integer.class)
    private Integer status;

    @Schema(description = "报名标识，当前时间超过开始时间为false", type = "Boolean", implementation = Boolean.class)
    private Boolean canRegistrateFlag;

    @Schema(description = "分享文件", type = "FileInfoVo", implementation = FileInfoVo.class)
    private FileInfoVo sharePhotoFile;
}
